import AppImageUrls from "./AppImageUrl.mjs";
import AppUserInfo from "./AppUserInfo.mjs";
import AppTag from "./AppTag.mjs";
import AppMetaPage from "./AppMetaPage.mjs";

/**
 * 插画作品类
 */
export default class AppIllustDetail {
    /**
     * 插画ID
     * @type {number}
     */
    id

    /**
     * 插画标题
     * @type {string}
     */
    title

    /**
     * 插画类型（illust/ugoira等）
     * @type {string}
     */
    type

    /**
     * 图片URL集合
     * @type {AppImageUrls}
     */
    image_urls

    /**
     * 插画描述（HTML格式）
     * @type {string}
     */
    caption

    /**
     * 限制级别（0=无限制）
     * @type {number}
     */
    restrict

    /**
     * 作者信息
     * @type {AppUserInfo}
     */
    user

    /**
     * 标签数组
     * @type {AppTag[]}
     */
    tags

    /**
     * 使用的工具列表
     * @type {string[]}
     */
    tools

    /**
     * 创建日期（ISO 8601格式）
     * @type {string}
     */
    create_date

    /**
     * 页数
     * @type {number}
     */
    page_count

    /**
     * 图片宽度（像素）
     * @type {number}
     */
    width

    /**
     * 图片高度（像素）
     * @type {number}
     */
    height

    /**
     * 健全度级别（2-6，越高内容越敏感）
     * @type {number}
     */
    sanity_level

    /**
     * 年龄限制（0=全年龄，1=R18）
     * @type {number}
     */
    x_restrict

    /**
     * 系列信息（非系列作品为null）
     * @type {Object|null}
     */
    series

    /**
     * 单页元数据（多页作品为空对象）
     * @type {Object}
     */
    meta_single_page

    /**
     * 多页元数据
     * @type {AppMetaPage[]}
     */
    meta_pages

    /**
     * 总浏览数
     * @type {number}
     */
    total_view

    /**
     * 总收藏数
     * @type {number}
     */
    total_bookmarks

    /**
     * 是否已收藏
     * @type {boolean}
     */
    is_bookmarked

    /**
     * 是否可见
     * @type {boolean}
     */
    visible

    /**
     * 是否已静音
     * @type {boolean}
     */
    is_muted

    /**
     * 季节性特效动画URL（无则为null）
     * @type {string|null}
     */
    seasonal_effect_animation_urls

    /**
     * 活动横幅信息（无则为null）
     * @type {Object|null}
     */
    event_banners

    /**
     * 总评论数
     * @type {number}
     */
    total_comments

    /**
     * AI生成类型（1=AI生成）
     * @type {number}
     */
    illust_ai_type

    /**
     * 插画书籍样式
     * @type {number}
     */
    illust_book_style

    /**
     * 请求信息（无则为null）
     * @type {Object|null}
     */
    request

    /**
     * 限制属性数组
     * @type {string[]}
     */
    restriction_attributes

    /**
     * 评论访问控制（0=允许评论）
     * @type {number}
     */
    comment_access_control

    constructor(data) {
        this.id = data.id
        this.title = data.title
        this.type = data.type
        this.image_urls = new AppImageUrls(data.image_urls)
        this.caption = data.caption
        this.restrict = data.restrict
        this.user = new AppUserInfo(data.user)
        this.tags = data.tags.map(tag => new AppTag(tag))
        this.tools = data.tools
        this.create_date = data.create_date
        this.page_count = data.page_count
        this.width = data.width
        this.height = data.height
        this.sanity_level = data.sanity_level
        this.x_restrict = data.x_restrict
        this.series = data.series
        this.meta_single_page = data.meta_single_page
        this.meta_pages = data.meta_pages.map(page => new AppMetaPage(page))
        this.total_view = data.total_view
        this.total_bookmarks = data.total_bookmarks
        this.is_bookmarked = data.is_bookmarked
        this.visible = data.visible
        this.is_muted = data.is_muted
        this.seasonal_effect_animation_urls = data.seasonal_effect_animation_urls
        this.event_banners = data.event_banners
        this.total_comments = data.total_comments
        this.illust_ai_type = data.illust_ai_type
        this.illust_book_style = data.illust_book_style
        this.request = data.request
        this.restriction_attributes = data.restriction_attributes
        this.comment_access_control = data.comment_access_control
    }
}
